import { mapState } from 'vuex'

/**
 *
 * @param store
 * @param _name mutations 中的名称，默认为 vuexEnhancePlugin.js 中的$stStore
 * @returns {{computed: {[p: string]: Computed}, created(): void}}
 */
export default function (store,_name){
    // 尝试将用户在根目录中的store/index.js的vuex的state变量，全部加载到全局变量中
    let $uStoreKey = [];
    try{
        $uStoreKey = store.state ? Object.keys(store.state) : [];
    }catch(e){

    }
    return {
        created() {
            if (!this.$st) {
                this.$st = {}
            }
            // 将vuex方法挂在到$u中
            // 使用方法为：如果要修改vuex的state中的user.name变量为"史诗" => this.$u.vuex('user.name', '史诗')
            // 如果要修改vuex的state的version变量为1.0.1 => this.$u.vuex('version', '1.0.1')
            this.$st.vuex = (name, value) => {
                this.$store.commit(_name, {
                    name,value
                })
            }
        },
        computed: {
            // 将vuex的state中的所有变量，解构到全局混入的mixin中
            ...mapState($uStoreKey)
        }
    }
}